<?php
/**
 * Controle de Cliente
 * @filesource  06/04/2011
 * @author      Estrada Virtual <http://estradavirtual.com.br>
 * @copyright   Copyright <2011> Estrada Virtual
 * @package     <<application>>
 * @subpackage  <<application>>.application.controllers
 * @version     $Id$
 */
class ClienteController extends App_Controller_Crud
{

    protected function _carregarExtrasFormulario()
    {
        parent::_carregarExtrasFormulario();
        $this->view->rowSetArtefatos = array();
    }

    public function extrasGrid($oGrid)
    {
        if (!$this->_getParam('_exportTo')) {
            $baseUrl   = $this->view->baseUrl();
            $sControle =  'corporativo/cliente';
            $sId       = 'id_cliente';
            $extra = new Bvb_Grid_Extra_Column();
            $extra->position ('left')
                  ->name('Ação')
                  ->decorator ('
                            <a class="mr-5" href="' . $baseUrl . '/'. $sControle . '/visualizar/id/{{' . $sId . '}}" rel="tooltip" title="Visualizar"><i class="icon-eye-open"></i></a>
                            <a class="mr-5" href="' . $baseUrl . '/'. $sControle . '/formulario/id/{{' . $sId . '}}" rel="tooltip" title="Editar"><i class="icon-edit"></i></a>
                            <a href="' . $baseUrl . '/'. $sControle . '/excluir/id/{{' . $sId . '}}" rel="tooltip" title="Excluir"><i class="icon-trash"></i></a>
                        ');
            $oGrid->addExtraColumns($extra);
        }
        return $oGrid;
    }

    public function visualizarAction()
    {
        $id_cliente = $this->_getParam('id');

        // Tipo serviço
        $modelTipoServico = new Model_TipoServico();
        $rowSetTipoServico = $modelTipoServico->fetchAll();
        $aTipoServico = array();
        foreach ($rowSetTipoServico as $rowTipoServico) {
            $aTipoServico[$rowTipoServico->id_tipo_servico] = $rowTipoServico->st_nome;
        }

        // Tipo projeto
        $modelTipoProjeto = new Model_TipoProjeto();
        $rowSetTipoProjeto = $modelTipoProjeto->fetchAll();
        $aProjetoTipo = array();
        foreach ($rowSetTipoProjeto as $rowTipo) {
            $aProjetoTipo[$rowTipo->id_tipo_projeto] = $rowTipo->st_nome;
        }

        $cliente = new Model_Cliente();
        $rowCliente = $cliente->find($id_cliente)->current();

        $this->view->aTipoServico = $aTipoServico;
        $this->view->projetoTipo = $aProjetoTipo;
        $this->view->rowCliente = $rowCliente;
        $this->view->rowSetProjetos = $rowCliente->findModel_Projeto();
        $this->view->projetoSituacao = Model_Projeto::getSituacoes();
        $this->view->rowSetServicos = $rowCliente->findModel_Servico();
        $this->view->rowSetNotasFiscais = $rowCliente->findModel_NotaFiscal();
        $this->view->rowSetCredenciais  = $rowCliente->findModel_Credencial();
        $this->view->rowSetContatos     = $rowCliente->findModel_Contato();
        $this->view->rowSetUsuarios     = $rowCliente->findModel_UsuarioViaModel_ClienteUsuario();
        $this->_carregarUsuarios();
    }

    public function relacionarUsuarioAction()
    {
        $this->_helper->layout()->disableLayout();
        $fk_cliente = $this->_getParam('fk_cliente');
        if ($this->getRequest()->isPost()) {
            $aUsuarios = (array) $this->_getParam('aUsuarios');
            $model = new Model_ClienteUsuario();
            //$model->delete('fk_cliente = ' . $fk_cliente);
            foreach ($aUsuarios as $idUsuario) {
                $dados['fk_usuario'] = $idUsuario;
                $dados['fk_cliente'] = $fk_cliente;
                $model->createRow($dados)->save();
            }
            $this->_addMessage('Usuários relacionados', 'corporativo/cliente/visualizar/id/' . $fk_cliente);
        }
        $usuario = new Model_Usuario();
        $rowSetUsuario = $usuario->fetchAll();

        $modelCliente = new Model_Cliente();
        $rowCliente = $modelCliente->find($fk_cliente)->current();

        $aUsuariosCliente = array();
        $rowSetUsuarioCliente = $rowCliente->findModel_UsuarioViaModel_ClienteUsuario();
        foreach ($rowSetUsuarioCliente as $rowUsuario) {
            $aUsuariosCliente[$rowUsuario->id_usuario] = true;
        }

        $rowSetUsuarioView = array();
        foreach ($rowSetUsuario as $rowUsuario) {
            if (isset($aUsuariosCliente[$rowUsuario->id_usuario])) {
                continue;
            }
            $rowSetUsuarioView[] = $rowUsuario;
        }

        $this->view->fk_cliente = $fk_cliente;
        $this->view->rowSetUsuario = $rowSetUsuarioView;
    }

    public function excluirUsuarioAction()
    {
        $fk_cliente = $this->_getParam('fk_cliente');
        $fk_usuario = $this->_getParam('fk_usuario');
        $model = new Model_ClienteUsuario();
        $model->delete('fk_cliente = ' . $fk_cliente . ' AND fk_usuario = ' . $fk_usuario);
        $this->_addMessage('Usuário desrelacionado', 'corporativo/cliente/visualizar/id/' . $fk_cliente);
    }
}
